/**
 * File DefaultProgramLook.java
 * ---------------------------------------------------------
 *
 * Copyright (C) 2012 David Bauske (david.bauske@googlemail.com)
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
 *
 * - The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 * - The origin of the software must not be misrepresented.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 *
 * TL;DR: As long as you clearly give me credit for this Software, you are free to use as you like, even in commercial software, but don't blame me
 * 		if it breaks something.
 */
package de.erb.erir.view;

import java.awt.Color;
import java.awt.Image;

import javax.swing.Icon;
import javax.swing.ImageIcon;

/**
 * Defines constants that represent the default program look.
 *
 * @author David Bauske
 */
public enum DefaultProgramLook implements ProgramLook
{
	/**
	 * The black-orange ElefantRacing look
	 */
	ELEFANT_RACING(
			new Color(50, 50, 50), new Color(250, 123, 26), new Color(50, 50, 50), Color.WHITE,
			new Color(152, 255, 68), Color.RED, Color.WHITE, new Color(108, 255, 63), Color.BLACK,
			new ImageIcon(ClassLoader.getSystemResource("images/camera.png")),
			new ImageIcon(ClassLoader.getSystemResource("images/info.png")),
			new ImageIcon(ClassLoader.getSystemResource("images/close.png")),
			new ImageIcon(ClassLoader.getSystemResource("images/favicon.png")).getImage()),

	/**
	 * A normal, decently colored look
	 */
	NEUTRAL(
			new Color(230, 230, 230), new Color(50, 50, 50), new Color(230, 230, 230), new Color(
					125, 125, 125), Color.GREEN,
			Color.RED, Color.WHITE, new Color(150, 255, 150), Color.BLACK,
			new ImageIcon(
					ClassLoader.getSystemResource("images/camera.png")),
					new ImageIcon(ClassLoader.getSystemResource("images/info.png")),
					new ImageIcon(ClassLoader.getSystemResource("images/close.png")),
					new ImageIcon(ClassLoader.getSystemResource("images/camera.png")).getImage());

	private DefaultProgramLook(Color pBG, Color pFG, Color pFGC, Color pHL,
			Color pSuccess, Color pError, Color pFN, Color pFO, Color pFTC, Icon pDZI,
			Icon pInfoIcon, Icon pCloseIcon, Image pPI)
	{
		mBackground = pBG;
		mForeground = pFG;
		mHighlight = pHL;
		mSuccess = pSuccess;
		mError = pError;
		mFieldNeutralColor = pFN;
		mFieldOkColor = pFO;
		mDropZoneIcon = pDZI;
		mProgramIcon = pPI;
		mInfoIcon = pInfoIcon;
		mCloseIcon = pCloseIcon;
		mFieldTextColor = pFTC;
		mForegroundContrastColor = pFGC;
	}

	private Color	mBackground;
	private Color	mForeground;
	private Color	mForegroundContrastColor;
	private Color	mHighlight;
	private Color	mSuccess;
	private Color	mError;
	private Color	mFieldNeutralColor;
	private Color	mFieldOkColor;
	private Color	mFieldTextColor;
	private Icon	mDropZoneIcon;
	private Icon	mInfoIcon;
	private Icon	mCloseIcon;
	private Image	mProgramIcon;

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getBackgroundColor()
	{
		return mBackground;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getForegroundColor()
	{
		return mForeground;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getHighlightColor()
	{
		return mHighlight;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getSuccessColor()
	{
		return mSuccess;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getErrorColor()
	{
		return mError;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Icon getDropZoneIcon()
	{
		return mDropZoneIcon;
	}

	@Override
	public Icon getCloseIcon()
	{
		return mCloseIcon;
	}

	@Override
	public Icon getInfoIcon()
	{
		return mInfoIcon;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getFieldNeutralColor()
	{
		return mFieldNeutralColor;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getFieldOkColor()
	{
		return mFieldOkColor;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Image getProgramImage()
	{
		return mProgramIcon;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getFieldTextColor()
	{
		return mFieldTextColor;
	}

	/**
	 * {@inheritDoc}
	 */
	@Override
	public Color getFourgroundContrastColor()
	{
		return mForegroundContrastColor;
	}
}
